glmap1 - Man Page






glMap1(3G)		       OpenGL Reference			    glMap1(3G)



NAME
     glMap1d, glMap1f -	define a one-dimensional evaluator


C SPECIFICATION
     void glMap1d( GLenum target,
		   GLdouble u1,
		   GLdouble u2,
		   GLint stride,
		   GLint order,
		   const GLdouble *points )
     void glMap1f( GLenum target,
		   GLfloat u1,
		   GLfloat u2,
		   GLint stride,
		   GLint order,
		   const GLfloat *points )


PARAMETERS
     target  Specifies the kind	of values that are generated by	the evaluator.
	     Symbolic constants	GL_MAP1_VERTEX_3, GL_MAP1_VERTEX_4,
	     GL_MAP1_INDEX, GL_MAP1_COLOR_4, GL_MAP1_NORMAL,
	     GL_MAP1_TEXTURE_COORD_1, GL_MAP1_TEXTURE_COORD_2,
	     GL_MAP1_TEXTURE_COORD_3, and GL_MAP1_TEXTURE_COORD_4 are
	     accepted.

     u1, u2  Specify a linear mapping of u, as presented to glEvalCoord1, to
	     ^,	the variable that is evaluated by the equations	specified by
	     this command.

     stride  Specifies the number of floats or doubles between the beginning
	     of	one control point and the beginning of the next	one in the
	     data structure referenced in points.  This	allows control points
	     to	be embedded in arbitrary data structures.  The only constraint
	     is	that the values	for a particular control point must occupy
	     contiguous	memory locations.

     order   Specifies the number of control points.  Must be positive.

     points  Specifies a pointer to the	array of control points.


DESCRIPTION
     Evaluators	provide	a way to use polynomial	or rational polynomial mapping
     to	produce	vertices, normals, texture coordinates,	and colors.  The
     values produced by	an evaluator are sent to further stages	of GL
     processing	just as	if they	had been presented using glVertex, glNormal,
     glTexCoord, and glColor commands, except that the generated values	do not
     update the	current	normal,	texture	coordinates, or	color.





									Page 1






glMap1(3G)		       OpenGL Reference			    glMap1(3G)



     All polynomial or rational	polynomial splines of any degree (up to	the
     maximum degree supported by the GL	implementation)	can be described using
     evaluators.  These	include	almost all splines used	in computer graphics,
     including B-splines, Bezier curves, Hermite splines, and so on.

     Evaluators	define curves based on Bernstein polynomials.  Define p(^) as

					  n  n(^)Ri
				p(^)  =	 iR0Bi

				      n(^) is the ith Bernstein	polynomial of
     degreeRn (ordero=tn+1):oint and Bi

				       (   )
			      n(^)  =  |n  |^i(1-^)n-i
			     Bi	       (i  )


     Recall that
					 (    )
			      00 = 1 and |n   |	 =  1
					 ( 0  )

     glMap1 is used to define the basis	and to specify what kind of values are
     produced.	Once defined, a	map can	be enabled and disabled	by calling
     glEnable and glDisable with the map name, one of the nine predefined
     values for	target described below.	 glEvalCoord1 evaluates	the one-
     dimensional maps that are enabled.	 When glEvalCoord1 presents a value u,
     the Bernstein functions are evaluated using ^, where
					 _______
				   ^  =	 u2 - u1


     target is a symbolic constant that	indicates what kind of control points
     are provided in points, and what output is	generated when the map is
     evaluated.	 It can	assume one of nine predefined values:

     GL_MAP1_VERTEX_3	      Each control point is three floating-point
			      values representing x, y,	and z.	Internal
			      glVertex3	commands are generated when the	map is
			      evaluated.

     GL_MAP1_VERTEX_4	      Each control point is four floating-point	values
			      representing x, y, z, and	w.  Internal glVertex4
			      commands are generated when the map is
			      evaluated.

     GL_MAP1_INDEX	      Each control point is a single floating-point
			      value representing a color index.	 Internal
			      glIndex commands are generated when the map is
			      evaluated.  The current index is not updated


									Page 2






glMap1(3G)		       OpenGL Reference			    glMap1(3G)



			      with the value of	these glIndex commands,
			      however.

     GL_MAP1_COLOR_4	      Each control point is four floating-point	values
			      representing red,	green, blue, and alpha.
			      Internal glColor4	commands are generated when
			      the map is evaluated.  The current color is not
			      updated with the value of	these glColor4
			      commands,	however.

     GL_MAP1_NORMAL	      Each control point is three floating-point
			      values representing the x, y, and	z components
			      of a normal vector.  Internal glNormal commands
			      are generated when the map is evaluated.	The
			      current normal is	not updated with the value of
			      these glNormal commands, however.

     GL_MAP1_TEXTURE_COORD_1  Each control point is a single floating-point
			      value representing the s texture coordinate.
			      Internal glTexCoord1 commands are	generated when
			      the map is evaluated.  The current texture
			      coordinates are not updated with the value of
			      these glTexCoord commands, however.

     GL_MAP1_TEXTURE_COORD_2  Each control point is two	floating-point values
			      representing the s and t texture coordinates.
			      Internal glTexCoord2 commands are	generated when
			      the map is evaluated.  The current texture
			      coordinates are not updated with the value of
			      these glTexCoord commands, however.

     GL_MAP1_TEXTURE_COORD_3  Each control point is three floating-point
			      values representing the s, t, and	r texture
			      coordinates.  Internal glTexCoord3 commands are
			      generated	when the map is	evaluated.  The
			      current texture coordinates are not updated with
			      the value	of these glTexCoord commands, however.

     GL_MAP1_TEXTURE_COORD_4  Each control point is four floating-point	values
			      representing the s, t, r,	and q texture
			      coordinates.  Internal glTexCoord4 commands are
			      generated	when the map is	evaluated.  The
			      current texture coordinates are not updated with
			      the value	of these glTexCoord commands, however.

     stride, order, and	points define the array	addressing for accessing the
     control points.  points is	the location of	the first control point, which
     occupies one, two,	three, or four contiguous memory locations, depending
     on	which map is being defined.  order is the number of control points in
     the array.	 stride	tells how many float or	double locations to advance
     the internal memory pointer to reach the next control point.




									Page 3






glMap1(3G)		       OpenGL Reference			    glMap1(3G)



NOTES
     As	is the case with all GL	commands that accept pointers to data, it is
     as	if the contents	of points were copied by glMap1	before it returned.
     Changes to	the contents of	points have no effect after glMap1 is called.

ERRORS
     GL_INVALID_ENUM is	generated if target is not an accepted value.

     GL_INVALID_VALUE is generated if u1 is equal to u2.

     GL_INVALID_VALUE is generated if stride is	less than the number of	values
     in	a control point.

     GL_INVALID_VALUE is generated if order is less than one or	greater	than
     GL_MAX_EVAL_ORDER.

     GL_INVALID_OPERATION is generated if glMap1 is executed between the
     execution of glBegin and the corresponding	execution of glEnd.

ASSOCIATED GETS
     glGetMap
     glGet with	argument GL_MAX_EVAL_ORDER
     glIsEnabled with argument GL_MAP1_VERTEX_3
     glIsEnabled with argument GL_MAP1_VERTEX_4
     glIsEnabled with argument GL_MAP1_INDEX
     glIsEnabled with argument GL_MAP1_COLOR_4
     glIsEnabled with argument GL_MAP1_NORMAL
     glIsEnabled with argument GL_MAP1_TEXTURE_COORD_1
     glIsEnabled with argument GL_MAP1_TEXTURE_COORD_2
     glIsEnabled with argument GL_MAP1_TEXTURE_COORD_3
     glIsEnabled with argument GL_MAP1_TEXTURE_COORD_4


SEE ALSO
     glBegin, glColor, glEnable, glEvalCoord, glEvalMesh, glEvalPoint, glMap2,
     glMapGrid,	glNormal, glTexCoord, glVertex



















									Page 4